import { createRouter, createWebHashHistory } from 'vue-router'
import type { RouteRecordRaw } from 'vue-router'
import type { App } from 'vue'
import { Layout } from '@/utils/routerHelper'
import { useI18n } from '@/hooks/web/useI18n'

const { t } = useI18n()

export const constantRouterMap: AppRouteRecordRaw[] = [
  {
    path: '/',
    component: Layout,
    redirect: '/dashboard/analysis',
    name: 'Root',
    meta: {
      hidden: true
    }
  },
  {
    path: '/redirect',
    component: Layout,
    name: 'Redirect',
    children: [
      {
        path: '/redirect/:path(.*)',
        name: 'Redirect',
        component: () => import('@/views/Redirect/Redirect.vue'),
        meta: {}
      }
    ],
    meta: {
      hidden: true,
      noTagsView: true
    }
  },
  {
    path: '/login',
    component: () => import('@/views/Login/Login.vue'),
    name: 'Login',
    meta: {
      hidden: true,
      title: t('router.login'),
      noTagsView: true
    }
  },
  {
    path: '/404',
    component: () => import('@/views/Error/404.vue'),
    name: 'NoFind',
    meta: {
      hidden: true,
      title: '404',
      noTagsView: true
    }
  }
]

export const asyncRouterMap: AppRouteRecordRaw[] = [
  // {
  //   path: '/dashboard',
  //   component: Layout,
  //   redirect: '/dashboard/analysis',
  //   name: 'Dashboard',
  //   meta: {
  //     title: t('router.dashboard'),
  //     icon: 'ant-design:dashboard-filled',
  //     alwaysShow: true
  //   },
  //   children: [
  //     {
  //       path: 'analysis',
  //       component: () => import('@/views/Dashboard/Analysis.vue'),
  //       name: 'Analysis',
  //       meta: {
  //         icon: 'ion:arrow-redo-circle-sharp',
  //         title: t('router.analysis'),
  //         noCache: true,
  //         affix: true
  //       }
  //     },
  //     {
  //       path: 'workplace',
  //       component: () => import('@/views/Dashboard/Workplace.vue'),
  //       name: 'Workplace',
  //       meta: {
  //         title: t('router.workplace'),
  //         icon: 'ion:bag-sharp',
  //         noCache: true
  //       }
  //     }
  //   ]
  // },
  // {
  //   path: '/sysParameter',
  //   component: Layout,
  //   redirect: '/sysParameter/origin/origin',
  //   name: 'sysParameter',
  //   meta: {
  //     title: t('router.systemParameter'),
  //     icon: 'eos-icons:role-binding',
  //     alwaysShow: true
  //   },
  //   children: [
  //     {
  //       path: 'origin',
  //       component: () => import('@/views/sysParameter/origin/origin.vue'),
  //       name: 'origin',
  //       meta: {
  //         icon: 'ion:compass',
  //         title: t('router.origin')
  //       }
  //     },
  //     {
  //       path: 'destination',
  //       component: () => import('@/views/sysParameter/destination/destination.vue'),
  //       name: 'destination',
  //       meta: {
  //         icon: 'ion:location-sharp',
  //         title: t('router.destination')
  //       }
  //     },
  //     {
  //       path: 'consignee',
  //       component: () => import('@/views/sysParameter/consignee/consigneeEntry.vue'),
  //       name: 'consignee',
  //       meta: {
  //         icon: 'ion:location-sharp',
  //         title: t('router.consignee')
  //       }
  //     },
  //     {
  //       path: 'shippingOrderSettings',
  //       component: () =>
  //         import('@/views/sysParameter/shippingOrderSettings/shippingOrderSettings.vue'),
  //       name: 'shippingOrderSettings',
  //       meta: {
  //         icon: 'eos-icons:abstract-instance',
  //         title: t('router.shippingOrderSettings')
  //       }
  //     },
  //     {
  //       path: 'outboundCity',
  //       component: () => import('@/views/sysParameter/outboundCity/outboundCity.vue'),
  //       name: 'outboundCity',
  //       meta: {
  //         icon: 'ion:md-business',
  //         title: t('router.outboundCity')
  //       }
  //     },
  //     {
  //       path: 'CustomsClearanceFormCompany',
  //       component: () =>
  //         import(
  //           '@/views/CustomsClearanceFormManage/CustomsClearanceFormCompany/CustomsClearanceFormCompany.vue'
  //         ),
  //       name: 'CustomsClearanceFormCompany',
  //       meta: {
  //         icon: 'fluent-emoji-high-contrast:department-store',
  //         title: t('router.CustomsClearanceFormCompany')
  //       }
  //     },
  //     {
  //       path: 'CustomsClearanceFormCompanyAdd',
  //       component: () =>
  //         import(
  //           '@/views/CustomsClearanceFormManage/CustomsClearanceFormCompany/CustomsClearanceFormCompanyAdd.vue'
  //         ),
  //       name: 'CustomsClearanceFormCompanyAdd',
  //       meta: {
  //         title: t('CustomsClearanceFormCompany.CustomsClearanceFormCompanyAdd'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/sysParameter/CustomsClearanceFormCompany'
  //       }
  //     },
  //     {
  //       path: 'CustomsClearanceFormCompanyEdit',
  //       component: () =>
  //         import(
  //           '@/views/CustomsClearanceFormManage/CustomsClearanceFormCompany/CustomsClearanceFormCompanyEdit.vue'
  //         ),
  //       name: 'CustomsClearanceFormCompanyEdit',
  //       meta: {
  //         title: t('CustomsClearanceFormCompany.CustomsClearanceFormCompanyEdit'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/sysParameter/CustomsClearanceFormCompany'
  //       }
  //     },
  //     {
  //       path: 'distributionMarket',
  //       component: () => import('@/views/sysParameter/distributionMarket/distributionMarket.vue'),
  //       name: 'distributionMarket',
  //       meta: {
  //         icon: 'ion:storefront',
  //         title: t('router.distributionMarket')
  //       }
  //     },
  //     {
  //       path: 'transport',
  //       component: () => import('@/views/sysParameter/transport/transport.vue'),
  //       name: 'transport',
  //       meta: {
  //         icon: 'ion:md-subway',
  //         title: t('router.transport')
  //       }
  //     },
  //     {
  //       path: 'transportAdd',
  //       component: () => import('@/views/sysParameter/transport/transportAdd.vue'),
  //       name: 'transportAdd',
  //       meta: {
  //         title: t('router.transportAdd'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/sysParameter/transport'
  //       }
  //     },
  //     {
  //       path: 'transportEdit',
  //       component: () => import('@/views/sysParameter/transport/transportEdit.vue'),
  //       name: 'transportEdit',
  //       meta: {
  //         title: t('router.transportEdit'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/sysParameter/transport'
  //       }
  //     },
  //     {
  //       path: 'package',
  //       component: () => import('@/views/sysParameter/package/package.vue'),
  //       name: 'package',
  //       meta: {
  //         icon: 'ion:ios-upload',
  //         title: t('router.package')
  //       }
  //     },
  //     {
  //       path: 'productManagement',
  //       component: () => import('@/views/sysParameter/productManagement/productManagement.vue'),
  //       name: 'productManagement',
  //       meta: {
  //         icon: 'humbleicons:clipboard',
  //         title: t('router.productManagement')
  //       }
  //     },
  //     {
  //       path: 'exchangeRate',
  //       component: () => import('@/views/sysParameter/exchangeRate/exchangeRate.vue'),
  //       name: 'exchangeRate',
  //       meta: {
  //         icon: 'humbleicons:currency-dollar-circle',
  //         title: t('router.exchangeRate')
  //       }
  //     }
  //   ]
  // },
  // {
  //   path: '/personnelManagement',
  //   component: Layout,
  //   name: 'personnelManagement',
  //   meta: {
  //     title: t('router.personnelManagement'),
  //     icon: 'ion:ios-contacts'
  //   },
  //   children: [
  //     {
  //       path: 'department',
  //       component: () => import('@/views/personnelManagement/department/department.vue'),
  //       name: 'department',
  //       meta: {
  //         icon: 'eos-icons:background-tasks',
  //         title: t('router.department')
  //       }
  //     },
  //     {
  //       path: 'staff',
  //       component: () => import('@/views/personnelManagement/staff/staff.vue'),
  //       name: 'staff',
  //       meta: {
  //         icon: 'eos-icons:ai-operator',
  //         title: t('router.staff')
  //       }
  //     },
  //     {
  //       path: 'traveling',
  //       component: () => import('@/views/personnelManagement/traveling/traveling.vue'),
  //       name: 'traveling',
  //       meta: {
  //         icon: 'game-icons:chest',
  //         title: t('router.travelingEmployees')
  //       }
  //     },
  //     {
  //       path: 'rebateUsers',
  //       component: () => import('@/views/personnelManagement/rebateUsers/rebateUsers.vue'),
  //       name: 'rebateUsers',
  //       meta: {
  //         icon: 'eos-icons:data-scientist',
  //         title: t('router.rebateUsers')
  //       }
  //     },
  //     {
  //       path: 'rebateUsersAdd',
  //       component: () => import('@/views/personnelManagement/rebateUsers/rebateUsersAdd.vue'),
  //       name: 'rebateUsersAdd',
  //       meta: {
  //         title: t('router.rebateUsersAdd'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/personnelManagement/rebateUsers'
  //       }
  //     },
  //     {
  //       path: 'customerManagement',
  //       component: () =>
  //         import('@/views/personnelManagement/customerManagement/customerManagement.vue'),
  //       name: 'customerManagement',
  //       meta: {
  //         title: t('router.customerManagement'),
  //         icon: 'ion:md-person'
  //       },
  //       children: []
  //     },
  //     {
  //       path: 'loginUser',
  //       component: () => import('@/views/personnelManagement/loginUser/loginUser.vue'),
  //       name: 'loginUser',
  //       meta: {
  //         title: '登录用户管理',
  //         icon: 'ion:md-person'
  //       },
  //       children: []
  //     },
  //     {
  //       path: 'customerManagementEdit',
  //       component: () =>
  //         import('@/views/personnelManagement/customerManagement/customerManagementEdit.vue'),
  //       name: 'customerManagementEdit',
  //       meta: {
  //         title: t('router.customerManagementEdit'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/personnelManagement/customerManagement'
  //       }
  //     },
  //     {
  //       path: 'customerManagementAdd',
  //       component: () =>
  //         import('@/views/personnelManagement/customerManagement/customerManagementAdd.vue'),
  //       name: 'customerManagementAdd',
  //       meta: {
  //         title: t('router.customerManagementAdd'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/personnelManagement/customerManagement'
  //       }
  //     }
  //   ]
  // },
  // {
  //   path: '/logistics',
  //   component: Layout,
  //   name: 'Logistics',
  //   meta: {
  //     title: t('router.logistics'),
  //     icon: 'ion:boat'
  //   },
  //   children: [
  //     {
  //       path: 'purchaseOrder',
  //       component: () => import('@/views/logistics/purchaseOrder/purchaseOrder.vue'),
  //       name: 'purchaseOrder',
  //       meta: {
  //         title: t('router.purchaseOrder'),
  //         icon: 'gridicons:clipboard'
  //       }
  //     },
  //     {
  //       path: 'purchaseOrderAdd',
  //       component: () => import('@/views/logistics/purchaseOrder/purchaseOrderAdd.vue'),
  //       name: 'purchaseOrderAdd',
  //       meta: {
  //         title: t('router.purchaseOrderAdd'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/logistics/purchaseOrder'
  //       }
  //     },
  //     {
  //       path: 'purchaseOrderEdit',
  //       component: () => import('@/views/logistics/purchaseOrder/purchaseOrderEdit.vue'),
  //       name: 'purchaseOrderEdit',
  //       meta: {
  //         title: t('router.purchaseOrderEditing'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/logistics/purchaseOrder'
  //       }
  //     },
  //     {
  //       path: 'warehousingEntry',
  //       component: () => import('@/views/logistics/warehousingEntry/warehousingEntry.vue'),
  //       name: 'warehousingEntry',
  //       meta: {
  //         title: t('router.warehousingEntry'),
  //         icon: 'gridicons:pages'
  //       }
  //     },
  //     {
  //       path: 'warehousingEntryEdit',
  //       component: () => import('@/views/logistics/warehousingEntry/warehousingEntryEdit.vue'),
  //       name: 'warehousingEntryEdit',
  //       meta: {
  //         title: t('router.warehousingEntryEdit'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/logistics/warehousingEntry'
  //       }
  //     },
  //     {
  //       path: 'warehousingEntryAdd',
  //       component: () => import('@/views/logistics/warehousingEntry/warehousingEntryAdd.vue'),
  //       name: 'warehousingEntryAdd',
  //       meta: {
  //         title: t('router.warehousingEntryAdd'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/logistics/warehousingEntry'
  //       }
  //     },
  //     {
  //       path: 'invoice',
  //       component: () => import('@/views/logistics/Invoice/invoice.vue'),
  //       name: 'invoice',
  //       meta: {
  //         icon: 'pepicons-pop:cv',
  //         title: t('router.invoice')
  //       }
  //     },
  //     {
  //       path: 'invoiceAdd',
  //       component: () => import('@/views/logistics/Invoice/invoiceAdd.vue'),
  //       name: 'invoiceAdd',
  //       meta: {
  //         title: '出库单编辑',
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/logistics/invoice'
  //       }
  //     }
  //   ]
  // },
  // // {
  // //   path: '/salesManagement',
  // //   component: Layout,
  // //   name: 'salesManagement',
  // //   meta: {},
  // //   children: [
  // //     {
  // //       path: 'index',
  // //       component: () => import('@/views/salesManagement/salesManagement.vue'),
  // //       name: 'salesManagement',
  // //       meta: {
  // //         title: t('router.salesManagement'),
  // //         icon: 'ion:ios-people'
  // //       }
  // //     }
  // //   ]
  // // },
  // {
  //   path: '/warehouseManagement',
  //   component: Layout,
  //   name: 'warehouseManagement',
  //   meta: {},
  //   children: [
  //     {
  //       path: 'warehouseManagement',
  //       component: () => import('@/views/warehouseManagement/warehouseManagement.vue'),
  //       name: 'warehouseManagement',
  //       meta: {
  //         title: t('router.warehouseManagement'),
  //         icon: 'ion:ios-home'
  //       }
  //     }
  //   ]
  // },
  // {
  //   path: '/warehouseGoods',
  //   component: Layout,
  //   name: 'warehouseGoods',
  //   meta: {},
  //   children: [
  //     {
  //       path: 'warehouseGoods',
  //       component: () => import('@/views/warehouseGoods/warehouseGoods.vue'),
  //       name: 'warehouseGoods',
  //       meta: {
  //         title: t('router.warehouseGoods'),
  //         icon: 'ion:ios-home'
  //       }
  //     }
  //   ]
  // },
  // {
  //   path: '/fixedAssetManagement',
  //   component: Layout,
  //   name: 'fixedAssetManagement',
  //   meta: {},
  //   children: [
  //     {
  //       path: 'index',
  //       component: () => import('@/views/fixedAssetManagement/fixedAssetManagement.vue'),
  //       name: 'fixedAssetManagement',
  //       meta: {
  //         title: t('router.fixedAssetManagement'),
  //         icon: 'ion:pie-chart'
  //       }
  //     }
  //   ]
  // },
  // {
  //   path: '/financialManagement',
  //   component: Layout,
  //   name: 'financialManagement',
  //   meta: {},
  //   children: [
  //     {
  //       path: 'financialManagement',
  //       component: () => import('@/views/financialManagement/financialManagement.vue'),
  //       name: 'financialManagement',
  //       meta: {
  //         title: t('router.financialManagement'),
  //         icon: 'ion:invert-mode-outline'
  //       }
  //     }
  //   ]
  // },
  // // {
  // //   path: '/sysManagement',
  // //   component: Layout,
  // //   name: 'sysManagement',
  // //   meta: {},
  // //   children: [
  // //     {
  // //       path: 'index',
  // //       component: () => import('@/views/sysManagement/sysManagement.vue'),
  // //       name: 'sysManagement',
  // //       meta: {
  // //         title: t('router.sysManagement'),
  // //         icon: 'ion:grid'
  // //       }
  // //     }
  // //   ]
  // // },
  // // {
  // //   path: '/authorization',
  // //   component: Layout,
  // //   redirect: '/authorization/user',
  // //   name: 'Authorization',
  // //   meta: {
  // //     title: t('router.authorization'),
  // //     icon: 'ion:ios-key',
  // //     alwaysShow: true
  // //   },
  // //   children: [
  // //     {
  // //       path: 'user',
  // //       component: () => import('@/views/Authorization/User.vue'),
  // //       name: 'User',
  // //       meta: {
  // //         icon: 'gridicons:user-add',
  // //         title: t('router.user')
  // //       }
  // //     },
  // //     {
  // //       path: 'role',
  // //       component: () => import('@/views/Authorization/Role.vue'),
  // //       name: 'Role',
  // //       meta: {
  // //         icon: 'icon-park-solid:appointment',
  // //         title: t('router.role')
  // //       }
  // //     }
  // //   ]
  // // },
  // // {
  // //   path: '/external-link',
  // //   component: Layout,
  // //   meta: {},
  // //   name: 'ExternalLink',
  // //   children: [
  // //     {
  // //       path: 'https://element-plus-admin-doc.cn/',
  // //       name: 'DocumentLink',
  // //       meta: {
  // //         title: t('router.document'),
  // //         icon: 'clarity:document-solid'
  // //       }
  // //     }
  // //   ]
  // // },
  // // {
  // //   path: '/guide',
  // //   component: Layout,
  // //   name: 'Guide',
  // //   meta: {},
  // //   children: [
  // //     {
  // //       path: 'index',
  // //       component: () => import('@/views/Guide/Guide.vue'),
  // //       name: 'GuideDemo',
  // //       meta: {
  // //         title: t('router.guide'),
  // //         icon: 'cib:telegram-plane'
  // //       }
  // //     }
  // //   ]
  // // },
  // // {
  // //   path: '/components',
  // //   component: Layout,
  // //   name: 'ComponentsDemo',
  // //   meta: {
  // //     title: t('router.component'),
  // //     icon: 'bx:bxs-component',
  // //     alwaysShow: true
  // //   },
  // //   children: [
  // //     {
  // //       path: 'form',
  // //       component: getParentLayout(),
  // //       redirect: '/components/form/default-form',
  // //       name: 'Form',
  // //       meta: {
  // //         title: t('router.form'),
  // //         alwaysShow: true
  // //       },
  // //       children: [
  // //         {
  // //           path: 'default-form',
  // //           component: () => import('@/views/Components/Form/DefaultForm.vue'),
  // //           name: 'DefaultForm',
  // //           meta: {
  // //             title: t('router.defaultForm')
  // //           }
  // //         },
  // //         {
  // //           path: 'use-form',
  // //           component: () => import('@/views/Components/Form/UseFormDemo.vue'),
  // //           name: 'UseForm',
  // //           meta: {
  // //             title: 'UseForm'
  // //           }
  // //         },
  // //         {
  // //           path: 'ref-form',
  // //           component: () => import('@/views/Components/Form/RefForm.vue'),
  // //           name: 'RefForm',
  // //           meta: {
  // //             title: 'RefForm'
  // //           }
  // //         }
  // //       ]
  // //     },
  // //     {
  // //       path: 'table',
  // //       component: getParentLayout(),
  // //       redirect: '/components/table/default-table',
  // //       name: 'TableDemo',
  // //       meta: {
  // //         title: t('router.table'),
  // //         alwaysShow: true
  // //       },
  // //       children: [
  // //         {
  // //           path: 'default-table',
  // //           component: () => import('@/views/Components/Table/DefaultTable.vue'),
  // //           name: 'DefaultTable',
  // //           meta: {
  // //             title: t('router.defaultTable')
  // //           }
  // //         },
  // //         {
  // //           path: 'use-table',
  // //           component: () => import('@/views/Components/Table/UseTableDemo.vue'),
  // //           name: 'UseTable',
  // //           meta: {
  // //             title: 'UseTable'
  // //           }
  // //         },
  // //         {
  // //           path: 'ref-table',
  // //           component: () => import('@/views/Components/Table/RefTable.vue'),
  // //           name: 'RefTable',
  // //           meta: {
  // //             title: 'RefTable'
  // //           }
  // //         }
  // //       ]
  // //     },
  // //     {
  // //       path: 'editor-demo',
  // //       component: getParentLayout(),
  // //       redirect: '/components/editor-demo/editor',
  // //       name: 'EditorDemo',
  // //       meta: {
  // //         title: t('router.editor'),
  // //         alwaysShow: true
  // //       },
  // //       children: [
  // //         {
  // //           path: 'editor',
  // //           component: () => import('@/views/Components/Editor/Editor.vue'),
  // //           name: 'Editor',
  // //           meta: {
  // //             title: t('router.richText')
  // //           }
  // //         }
  // //       ]
  // //     },
  // //     {
  // //       path: 'search',
  // //       component: () => import('@/views/Components/Search.vue'),
  // //       name: 'Search',
  // //       meta: {
  // //         title: t('router.search')
  // //       }
  // //     },
  // //     {
  // //       path: 'descriptions',
  // //       component: () => import('@/views/Components/Descriptions.vue'),
  // //       name: 'Descriptions',
  // //       meta: {
  // //         title: t('router.descriptions')
  // //       }
  // //     },
  // //     {
  // //       path: 'image-viewer',
  // //       component: () => import('@/views/Components/ImageViewer.vue'),
  // //       name: 'ImageViewer',
  // //       meta: {
  // //         title: t('router.imageViewer')
  // //       }
  // //     },
  // //     {
  // //       path: 'dialog',
  // //       component: () => import('@/views/Components/Dialog.vue'),
  // //       name: 'Dialog',
  // //       meta: {
  // //         title: t('router.dialog')
  // //       }
  // //     },
  // //     {
  // //       path: 'icon',
  // //       component: () => import('@/views/Components/Icon.vue'),
  // //       name: 'Icon',
  // //       meta: {
  // //         title: t('router.icon')
  // //       }
  // //     },
  // //     {
  // //       path: 'echart',
  // //       component: () => import('@/views/Components/Echart.vue'),
  // //       name: 'Echart',
  // //       meta: {
  // //         title: t('router.echart')
  // //       }
  // //     },
  // //     {
  // //       path: 'count-to',
  // //       component: () => import('@/views/Components/CountTo.vue'),
  // //       name: 'CountTo',
  // //       meta: {
  // //         title: t('router.countTo')
  // //       }
  // //     },
  // //     {
  // //       path: 'qrcode',
  // //       component: () => import('@/views/Components/Qrcode.vue'),
  // //       name: 'Qrcode',
  // //       meta: {
  // //         title: t('router.qrcode')
  // //       }
  // //     },
  // //     {
  // //       path: 'highlight',
  // //       component: () => import('@/views/Components/Highlight.vue'),
  // //       name: 'Highlight',
  // //       meta: {
  // //         title: t('router.highlight')
  // //       }
  // //     },
  // //     {
  // //       path: 'infotip',
  // //       component: () => import('@/views/Components/Infotip.vue'),
  // //       name: 'Infotip',
  // //       meta: {
  // //         title: t('router.infotip')
  // //       }
  // //     },
  // //     {
  // //       path: 'input-password',
  // //       component: () => import('@/views/Components/InputPassword.vue'),
  // //       name: 'InputPassword',
  // //       meta: {
  // //         title: t('router.inputPassword')
  // //       }
  // //     },
  // //     {
  // //       path: 'sticky',
  // //       component: () => import('@/views/Components/Sticky.vue'),
  // //       name: 'Sticky',
  // //       meta: {
  // //         title: t('router.sticky')
  // //       }
  // //     }
  // //   ]
  // // },
  // // {
  // //   path: '/hooks',
  // //   component: Layout,
  // //   redirect: '/hooks/useWatermark',
  // //   name: 'Hooks',
  // //   meta: {
  // //     title: 'hooks',
  // //     icon: 'ic:outline-webhook',
  // //     alwaysShow: true
  // //   },
  // //   children: [
  // //     {
  // //       path: 'useWatermark',
  // //       component: () => import('@/views/hooks/useWatermark.vue'),
  // //       name: 'UseWatermark',
  // //       meta: {
  // //         title: 'useWatermark'
  // //       }
  // //     },
  // //     {
  // //       path: 'useCrudSchemas',
  // //       component: () => import('@/views/hooks/useCrudSchemas.vue'),
  // //       name: 'UseCrudSchemas',
  // //       meta: {
  // //         title: 'useCrudSchemas'
  // //       }
  // //     }
  // //   ]
  // // },
  // // {
  // //   path: '/level',
  // //   component: Layout,
  // //   redirect: '/level/menu1/menu1-1/menu1-1-1',
  // //   name: 'Level',
  // //   meta: {
  // //     title: t('router.level'),
  // //     icon: 'carbon:skill-level-advanced'
  // //   },
  // //   children: [
  // //     {
  // //       path: 'menu1',
  // //       name: 'Menu1',
  // //       component: getParentLayout(),
  // //       redirect: '/level/menu1/menu1-1/menu1-1-1',
  // //       meta: {
  // //         title: t('router.menu1')
  // //       },
  // //       children: [
  // //         {
  // //           path: 'menu1-1',
  // //           name: 'Menu11',
  // //           component: getParentLayout(),
  // //           redirect: '/level/menu1/menu1-1/menu1-1-1',
  // //           meta: {
  // //             title: t('router.menu11'),
  // //             alwaysShow: true
  // //           },
  // //           children: [
  // //             {
  // //               path: 'menu1-1-1',
  // //               name: 'Menu111',
  // //               component: () => import('@/views/Level/Menu111.vue'),
  // //               meta: {
  // //                 title: t('router.menu111')
  // //               }
  // //             }
  // //           ]
  // //         },
  // //         {
  // //           path: 'menu1-2',
  // //           name: 'Menu12',
  // //           component: () => import('@/views/Level/Menu12.vue'),
  // //           meta: {
  // //             title: t('router.menu12')
  // //           }
  // //         }
  // //       ]
  // //     },
  // //     {
  // //       path: 'menu2',
  // //       name: 'Menu2',
  // //       component: () => import('@/views/Level/Menu2.vue'),
  // //       meta: {
  // //         title: t('router.menu2')
  // //       }
  // //     }
  // //   ]
  // // },
  // {
  //   path: '/example',
  //   component: Layout,
  //   redirect: '/example/example-dialog',
  //   name: 'Example',
  //   meta: {
  //     title: t('router.example'),
  //     icon: 'ep:management',
  //     alwaysShow: true
  //   },
  //   children: [
  //     {
  //       path: 'example-dialog',
  //       component: () => import('@/views/Example/Dialog/ExampleDialog.vue'),
  //       name: 'ExampleDialog',
  //       meta: {
  //         icon: 'ooui:link-external-ltr',
  //         title: t('router.exampleDialog')
  //       }
  //     },
  //     {
  //       path: 'example-page',
  //       component: () => import('@/views/Example/Page/ExamplePage.vue'),
  //       name: 'ExamplePage',
  //       meta: {
  //         icon: 'ooui:article-ltr',
  //         title: t('router.examplePage')
  //       }
  //     },
  //     {
  //       path: 'example-add',
  //       component: () => import('@/views/Example/Page/ExampleAdd.vue'),
  //       name: 'ExampleAdd',
  //       meta: {
  //         title: t('router.exampleAdd'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/example/example-page'
  //       }
  //     },
  //     {
  //       path: 'example-edit',
  //       component: () => import('@/views/Example/Page/ExampleEdit.vue'),
  //       name: 'ExampleEdit',
  //       meta: {
  //         title: t('router.exampleEdit'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/example/example-page'
  //       }
  //     },
  //     {
  //       path: 'example-detail',
  //       component: () => import('@/views/Example/Page/ExampleDetail.vue'),
  //       name: 'ExampleDetail',
  //       meta: {
  //         title: t('router.exampleDetail'),
  //         noTagsView: true,
  //         noCache: true,
  //         hidden: true,
  //         canTo: true,
  //         activeMenu: '/example/example-page'
  //       }
  //     }
  //   ]
  // },
  // {
  //   path: '/error',
  //   component: Layout,
  //   redirect: '/error/404',
  //   name: 'Error',
  //   meta: {
  //     title: t('router.errorPage'),
  //     icon: 'ci:error',
  //     alwaysShow: true
  //   },
  //   children: [
  //     {
  //       path: '404-demo',
  //       component: () => import('@/views/Error/404.vue'),
  //       name: '404Demo',
  //       meta: {
  //         icon: 'ooui:alert',
  //         title: '404'
  //       }
  //     },
  //     {
  //       path: '403-demo',
  //       component: () => import('@/views/Error/403.vue'),
  //       name: '403Demo',
  //       meta: {
  //         icon: 'ooui:alert',
  //         title: '403'
  //       }
  //     },
  //     {
  //       path: '500-demo',
  //       component: () => import('@/views/Error/500.vue'),
  //       name: '500Demo',
  //       meta: {
  //         icon: 'ooui:alert',
  //         title: '500'
  //       }
  //     }
  //   ]
  // }
]

const router = createRouter({
  history: createWebHashHistory(),
  strict: true,
  routes: constantRouterMap as RouteRecordRaw[],
  scrollBehavior: () => ({ left: 0, top: 0 })
})

export const resetRouter = (): void => {
  const resetWhiteNameList = ['Redirect', 'Login', 'NoFind', 'Root']
  router.getRoutes().forEach((route) => {
    const { name } = route
    if (name && !resetWhiteNameList.includes(name as string)) {
      router.hasRoute(name) && router.removeRoute(name)
    }
  })
}

export const setupRouter = (app: App<Element>) => {
  app.use(router)
}

export default router
